]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
panel: center date entry with workarea
authorDidier Roche <didrocks@ubuntu.com>
Tue, 9 Jan 2018 08:39:06 +0000 (09:39 +0100)
committerDidier Roche <didrocks@ubuntu.com>
Tue, 6 Feb 2018 10:19:58 +0000 (11:19 +0100)
Align and center the date entry with the workspace's workarea.
This way, maximized applications have their window aligned with the top date
entry.
This doesn't change anything for desktops with no docks or when left/right
workareas are aligned with the monitor.

The offset is leftOffset - rightOffset:
(workArea.x - monitor.x) - (monitor.width - ((workArea.x - monitor.x) +
                                              workArea.width))

https://bugzilla.gnome.org/show_bug.cgi?id=792354

js/ui/panel.js

index 3eeb12622791ed19be09e7f2ab0facc52fe1481b..afae2a435bf5e12c9a1487b1d4abb3c283d6bd60 100644 (file)
@@ -821,6 +821,7 @@ var Panel = new Lang.Class({
         global.window_group.connect('actor-removed', Lang.bind(this, this._onWindowActorRemoved));
         global.window_manager.connect('switch-workspace', Lang.bind(this, this._updateSolidStyle));
 
+        global.screen.connect('workareas-changed', () => { this.actor.queue_relayout(); });
         this._updatePanel();
     },
 
@@ -867,7 +868,16 @@ var Panel = new Lang.Class({
 
         let sideWidth, centerWidth;
         centerWidth = centerNaturalWidth;
-        sideWidth = Math.max(0, (allocWidth - centerWidth) / 2);
+
+        // get workspace area and center date entry relative to it
+        let monitor = Main.layoutManager.findMonitorForActor(actor);
+        let centerOffset = 0;
+        if (monitor) {
+            let workArea = Main.layoutManager.getWorkAreaForMonitor(monitor.index);
+            centerOffset = 2 * (workArea.x - monitor.x) + workArea.width - monitor.width;
+        }
+
+        sideWidth = Math.max(0, (allocWidth - centerWidth + centerOffset) / 2);
 
         let childBox = new Clutter.ActorBox();